Serverless FrameworkでProfileが存在しないというエラーの対処法
どうも!大阪オフィスの西村祐二です。
AWS上でアプリケーションを開発する際に、STG用、本番用、開発用とプロファイルを分けてAssumeRoleして開発していくことがあると思います。
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-profiles.html
Serverless Frameworkでプロファイルを指定してサーバーレスアプリケーションをデプロイする際にProfile <profile-name> does not exist
というエラーになってしまう(2019/1/11時点)場面に遭遇しましたので、その対処法を備忘録かねてブログにしておきます。
環境
- serverless framework
- v1.35.1
- node.js
- v8.12.0
- macOS
- 10.14.2
解決法
もともと、指定したいプロファイルを~/.aws/config
に記載していたのですが、
[profile hoge] source_profile = default role_arn = arn:aws:iam::123456777654:role/hoge region = ap-northeast-1
~/.aws/credentials
にプロファイルの情報を記載するように変更します。これで、きちんとプロファイル指定することができました。
注意点としては、プロファイル情報をcredentialsファイルに設定するときは、プレフィックスの`profile`は不要となります。
[hoge] source_profile = default role_arn = arn:aws:iam::123456777654:role/hoge region = ap-northeast-1
解決策2
$ export AWS_SDK_LOAD_CONFIG=1
上記コマンドで内部で使われているAWS_SDKで読み込み機能を有効にすることができます。
AWS_PROFILE
の環境変数も利用することができるようになります。
さいごに
いかがだったでしょうか。
Serverless FrameworkでProfileを指定したデプロイ時に遭遇したエラーの対処方法について記載しました。
誰かの参考になれば幸いです。